//package abg.core.common.ws;
//
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.ChannelInboundHandlerAdapter;
//import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
//import io.netty.handler.timeout.IdleState;
//import io.netty.handler.timeout.IdleStateEvent;
//import io.netty.handler.timeout.IdleStateHandler;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.TimeUnit;
//
//@Component
//public class WebSocketHandler extends ChannelInboundHandlerAdapter {
//
//    private static final int READ_IDLE_TIME = 60; // 读空闲超时时间，单位：秒
//    private static final int WRITE_IDLE_TIME = 0; // 写空闲超时时间，单位：秒
//    private static final int ALL_IDLE_TIME = 0; // 读写空闲超时时间，单位：秒
//
//    @Override
//    public void channelActive(ChannelHandlerContext ctx) {
//        // 添加心跳逻辑，用于管理连接的空闲状态
//        ctx.pipeline().addLast(new IdleStateHandler(READ_IDLE_TIME, WRITE_IDLE_TIME, ALL_IDLE_TIME, TimeUnit.SECONDS));
//    }
//
//    @Override
//    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//        if (msg instanceof TextWebSocketFrame) {
//            TextWebSocketFrame frame = (TextWebSocketFrame) msg;
//            String receivedMessage = frame.text();
//
//            // 在这里处理收到的 WebSocket 消息
//            // ...
//
//            // 发送响应消息
//            ctx.channel().writeAndFlush(new TextWebSocketFrame("Received: " + receivedMessage));
//        }
//    }
//
//    @Override
//    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
//        if (evt instanceof IdleStateEvent) {
//            IdleStateEvent event = (IdleStateEvent) evt;
//            if (event.state() == IdleState.READER_IDLE) {
//                // 读空闲超时，关闭连接或执行相关操作
//                ctx.close();
//            } else if (event.state() == IdleState.WRITER_IDLE) {
//                // 写空闲超时，发送心跳包
//                ctx.channel().writeAndFlush(new TextWebSocketFrame("Heartbeat"));
//            } else if (event.state() == IdleState.ALL_IDLE) {
//                // 读写空闲超时，关闭连接或执行相关操作
//                ctx.close();
//            }
//        }
//    }
//
//    @Override
//    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
//        cause.printStackTrace();
//        ctx.close();
//    }
//}
